Avastage React Server Actions'i võimsus sujuvaks vormide töötlemiseks ja serveripoolseteks andmemuutusteks. Õppige, kuidas luua tõhusaid, turvalisi ja kasutajasõbralikke veebirakendusi.
React Server Actions: Põhjalik Juhend Vormide Töötlemiseks ja Serveri Integratsiooniks
React Server Actions tähistavad olulist arengut selles, kuidas me Reactiga interaktiivseid veebirakendusi ehitame. Need võimaldavad arendajatel käivitada serveripoolset koodi otse Reacti komponentidest, lihtsustades vormide töötlemist, andmemuutusi ja muid serverist sõltuvaid toiminguid. See juhend annab põhjaliku ülevaate React Server Actions'ist, käsitledes nende eeliseid, rakendamise üksikasju ja parimaid praktikaid.
Mis on React Server Actions?
Server Actions on asünkroonsed funktsioonid, mis töötavad serveris. Neid saab kutsuda otse Reacti komponentidest, mis võimaldab teil käsitleda vormide esitamisi, uuendada andmeid ja teostada muud serveripoolset loogikat ilma eraldi API lõpp-punkte kirjutamata. See lähenemine lihtsustab arendust, vähendab kliendipoolse JavaScripti hulka ja parandab rakenduse jõudlust.
Server Actions'i peamised omadused:
- Serveripoolne täitmine: Toimingud käivitatakse ainult serveris, tagades andmete turvalisuse ja vältides tundliku loogika paljastamist kliendile.
- Otsene väljakutse Reacti komponentidest: Saate Server Actions'eid kutsuda otse oma komponentides, mis teeb serveripoolse loogika integreerimise kasutajaliidesesse lihtsaks.
- Asünkroonsed toimingud: Toimingud on asünkroonsed, mis võimaldab teil teostada aeganõudvaid ülesandeid kasutajaliidest blokeerimata.
- Progressiivne täiustamine: Server Actions toetavad progressiivset täiustamist, mis tähendab, et teie rakendus töötab ka siis, kui JavaScript on keelatud.
React Server Actions'i kasutamise eelised
Server Actions pakuvad mitmeid kaalukaid eeliseid võrreldes traditsiooniliste kliendipoolsete andmete pärimise ja muutmise tehnikatega:
Lihtsustatud arendus
Kõrvaldades vajaduse eraldi API lõpp-punktide järele, vähendavad Server Actions korduvkoodi hulka, mida peate kirjutama. See võib oluliselt lihtsustada teie arendusprotsessi ja muuta teie koodibaasi hooldatavamaks. Selle asemel, et ehitada ja hallata API marsruute, määratlete toimingud, mis asuvad koos neid kasutavate komponentidega.
Parem jõudlus
Server Actions võivad parandada rakenduse jõudlust, vähendades kliendis allalaaditava ja käivitatava JavaScripti hulka. Samuti võimaldavad need teil teostada andmete teisendusi ja valideerimist serveris, mis võib veelgi vähendada kliendi koormust. Server suudab andmetöötlust tõhusalt hallata, mis viib sujuvama kasutajakogemuseni.
Suurem turvalisus
Kuna Server Actions töötavad serveris, pakuvad need turvalisemat viisi tundlike andmete ja toimingute käsitlemiseks. Saate kaitsta oma andmeid volitamata juurdepääsu ja manipuleerimise eest, teostades valideerimis- ja autoriseerimiskontrolle serveris. See lisab turvakihi võrreldes kliendipoolsete valideerimistega, millest saab mööda minna.
Progressiivne täiustamine
Server Actions on loodud toetama progressiivset täiustamist. See tähendab, et teie rakendus töötab ka siis, kui JavaScript on keelatud või ei laadi. Kui JavaScript pole saadaval, esitatakse vormid traditsiooniliste HTML-vormide esitamise kaudu ja server käsitleb päringut vastavalt. See tagab, et teie rakendus on kättesaadav laiemale kasutajaskonnale, sealhulgas neile, kellel on vanemad brauserid või aeglasem internetiühendus.
Optimistlikud uuendused
Server Actions integreeruvad sujuvalt optimistlike uuendustega. Saate kasutajaliidest kohe värskendada, et see peegeldaks toimingu oodatavat tulemust, isegi enne kui server on muudatuse kinnitanud. See võib oluliselt parandada teie rakenduse tajutavat reageerimisvõimet ja pakkuda sujuvamat kasutajakogemust. Kui serveripoolne toiming ebaõnnestub, saate kasutajaliidese hõlpsalt selle eelmisesse olekusse tagasi viia.
Kuidas React Server Actions'eid rakendada
Server Actions'i rakendamine hõlmab toimingufunktsiooni määratlemist, selle sidumist komponendiga ja tulemuse käsitlemist.
Server Action'i määratlemine
Server Actions määratletakse direktiiviga 'use server'. See direktiiv ütleb Reacti kompilaatorile, et funktsioon tuleks käivitada serveris. Siin on näide:
// app/actions.js
'use server'
import { cookies } from 'next/headers'
import { revalidatePath } from 'next/cache'
export async function createPost(formData) {
const title = formData.get('title')
const content = formData.get('content')
// Simuleeri andmebaasi sisestust
await new Promise((resolve) => setTimeout(resolve, 1000))
console.log('Post created:', { title, content })
// Valideeri uuesti blogi marsruut
revalidatePath('/blog')
return { message: 'Postitus on edukalt loodud!' }
}
Selles näites:
- Direktiiv
'use server'näitab, et funktsiooncreatePosttuleks käivitada serveris. - Funktsioon võtab sisendiks
formDataobjekti, mis sisaldab vormilt esitatud andmeid. - Funktsioon eraldab
formData-sttitle(pealkirja) jacontent(sisu). - See simuleerib andmebaasi sisestust, kasutades
setTimeout. Reaalses rakenduses asendaksite selle oma tegeliku andmebaasi loogikaga. - Funktsioon
revalidatePathtühistab vahemälu/blogmarsruudi jaoks, tagades uusimate andmete kuvamise. - Funktsioon tagastab objekti atribuudiga
message, mida saab kasutada kasutajale eduteate kuvamiseks.
Server Actions'i kasutamine Reacti komponentides
Server Action'i kasutamiseks Reacti komponendis saate importida toimingufunktsiooni ja edastada selle <form> elemendi action atribuudile. Siin on näide:
// app/components/PostForm.js
import { createPost } from '../actions'
'use client'
import { useFormStatus } from 'react-dom'
function SubmitButton() {
const { pending } = useFormStatus()
return (
)
}
export default function PostForm() {
return (
)
}
Selles näites:
- Toiming
createPostimporditakse failist../actions. - Elemendi
<form>atribuutactionon seatud funktsioonilecreatePost. - Komponent
SubmitButtonkasutabuseFormStatushook'i, et teha kindlaks, kas vormi hetkel esitatakse. See keelab nupu vormi esitamise ajaks, et vältida mitmekordseid esitamisi.
Vormiandmete käsitlemine
Server Actions saavad vormiandmed automaatselt FormData objektina. Andmetele pääsete juurde, kasutades FormData objekti meetodit get. Siin on näide:
// app/actions.js
'use server'
export async function createPost(formData) {
const title = formData.get('title')
const content = formData.get('content')
// ...
}
Selles näites eraldatakse title ja content formData objektist meetodi get abil.
Kasutajale tagasiside andmine
Saate kasutajale tagasisidet anda, tagastades Server Action'ist väärtuse. See väärtus on kättesaadav komponendile, mis toimingu käivitas. Saate seda väärtust kasutada kasutajale edu- või veateadete kuvamiseks. Siin on näide:
// app/actions.js
'use server'
export async function createPost(formData) {
// ...
return { message: 'Postitus on edukalt loodud!' }
}
// app/components/PostForm.js
'use client'
import { useState } from 'react'
import { createPost } from '../actions'
export default function PostForm() {
const [message, setMessage] = useState(null)
async function handleSubmit(formData) {
const result = await createPost(formData)
setMessage(result.message)
}
return (
{message && {message}
}
)
}
Selles näites:
- Toiming
createPosttagastab objekti atribuudigamessage. - Komponent
PostFormkasutab teate salvestamiseksuseStatehook'i. - Funktsioon
handleSubmitkutsub välja toimingucreatePostja seab teate oleku toimingu poolt tagastatud väärtusele. - Teade kuvatakse kasutajale
<p>elemendis.
Vigade käsitlemine
Server Actions võivad visata vigu, mille Reacti käituskeskkond kinni püüab. Saate neid vigu oma komponentides käsitleda, kasutades try...catch plokki. Siin on näide:
// app/actions.js
'use server'
export async function createPost(formData) {
// ...
if (!title || title.length < 5) {
throw new Error('Pealkiri peab olema vähemalt 5 tähemärki pikk.')
}
return { message: 'Postitus on edukalt loodud!' }
}
// app/components/PostForm.js
'use client'
import { useState } from 'react'
import { createPost } from '../actions'
export default function PostForm() {
const [message, setMessage] = useState(null)
const [error, setError] = useState(null)
async function handleSubmit(formData) {
try {
const result = await createPost(formData)
setMessage(result.message)
setError(null)
} catch (e) {
setError(e.message)
setMessage(null)
}
}
return (
{message && {message}
}
{error && {error}
}
)
}
Selles näites:
- Toiming
createPostviskab vea, kui pealkiri on lühem kui 5 tähemärki. - Komponent
PostFormkasutabtry...catchplokki, et püüda kinni kõik vead, mille toimingcreatePostviskab. - Kui viga püütakse kinni, kuvatakse veateade kasutajale punase tekstiga
<p>elemendis.
React Server Actions'i kasutamise parimad praktikad
Et tagada Server Actions'i tõhus kasutamine, arvestage järgmiste parimate praktikatega:
Kasutage direktiivi 'use server'
Lisage alati oma Server Action failide algusesse direktiiv 'use server'. See direktiiv ütleb Reacti kompilaatorile, et failis olevad funktsioonid tuleks käivitada serveris. See on turvalisuse ja jõudluse seisukohalt ülioluline.
Hoidke toimingud väikesed ja keskendunud
Iga Server Action peaks täitma ühte, hästi määratletud ülesannet. See muudab teie toimingud lihtsamini mõistetavaks, testitavaks ja hooldatavaks. Vältige suurte, monoliitsete toimingute loomist, mis teevad mitut omavahel mitteseotud ülesannet.
Valideerige andmed serveris
Valideerige alati andmed serveris enne mis tahes toimingute tegemist. See kaitseb teie rakendust kehtetute või pahatahtlike andmete eest. Kasutage sobivaid valideerimistehnikaid, nagu andmetüübi valideerimine, pikkuse kontrollid ja regulaaravaldised. Serveripoolne valideerimine on turvalisem kui kliendipoolne valideerimine, millest saab mööda minna.
Käsitlege vigu sujuvalt
Käsitlege oma Server Actions'ites alati vigu sujuvalt. See hoiab ära teie rakenduse kokkujooksmise ja pakub paremat kasutajakogemust. Kasutage try...catch plokke, et püüda kinni kõik erandid, mis võivad tekkida, ja edastage kasutajale informatiivseid veateateid.
Kasutage optimistlikke uuendusi
Kasutage optimistlikke uuendusi, et parandada oma rakenduse tajutavat reageerimisvõimet. Värskendage kasutajaliidest kohe, et see peegeldaks toimingu oodatavat tulemust, isegi enne kui server on muudatuse kinnitanud. Kui serveripoolne toiming ebaõnnestub, saate kasutajaliidese hõlpsalt selle eelmisesse olekusse tagasi viia.
Kaaluge vahemälu kasutamist
Kaaluge Server Actions'i tulemuste vahemällu salvestamist jõudluse parandamiseks. See võib olla eriti kasulik toimingute puhul, mis teevad kulukaid operatsioone või mida sageli kutsutakse. Kasutage sobivaid vahemälustrateegiaid, nagu HTTP-vahemälu või serveripoolne vahemälu, et vähendada oma serveri koormust.
Turvake oma Server Actions'id
Rakendage turvameetmeid, et kaitsta oma Server Actions'eid volitamata juurdepääsu ja manipuleerimise eest. Kasutage autentimist ja autoriseerimist, et tagada, et ainult volitatud kasutajad saavad teatud toiminguid teha. Kaitske end levinud turvaaukude eest, nagu saidiülene skriptimine (XSS) ja SQL-i süstimine. Puhastage alati kasutaja sisend enne selle kasutamist andmebaasipäringutes või muudes tundlikes toimingutes.
Levinud kasutusjuhud React Server Actions'ile
Server Actions sobivad hästi mitmesugusteks kasutusjuhtudeks, sealhulgas:
Vormide esitamine
Vormide esitamise käsitlemine on üks levinumaid Server Actions'i kasutusjuhte. Saate kasutada Server Actions'eid vormiandmete töötlemiseks, sisendi valideerimiseks ja andmete salvestamiseks andmebaasi. See välistab vajaduse eraldi API lõpp-punktide järele ja lihtsustab teie arendusprotsessi. Näiteks kasutajate registreerimise, kontaktvormide või tooteülevaadete käsitlemine.
Andmemuutused
Server Actions'eid saab kasutada andmemuutuste tegemiseks, näiteks andmete loomiseks, uuendamiseks või kustutamiseks andmebaasis. See võimaldab teil värskendada oma rakenduse andmeid vastuseks kasutaja tegevustele. Näideteks on kasutajaprofiilide värskendamine, kommentaaride lisamine või postituste kustutamine.
Autentimine ja autoriseerimine
Server Actions'eid saab kasutada autentimise ja autoriseerimise käsitlemiseks. Saate kasutada Server Actions'eid kasutaja mandaatide kontrollimiseks, token'ite väljastamiseks ja tundlike ressursside kaitsmiseks. See tagab, et ainult volitatud kasutajad pääsevad ligi teie rakenduse teatud osadele. Näiteks sisse-/väljalogimise funktsioonide rakendamine, kasutajarollide haldamine või juurdepääsu autoriseerimine konkreetsetele funktsioonidele.
Reaalajas uuendused
Kuigi Server Actions ei ole oma olemuselt reaalajas, saab neid kombineerida teiste tehnoloogiatega, näiteks WebSocketsiga, et pakkuda teie rakendusele reaalajas uuendusi. Saate kasutada Server Actions'eid sündmuste käivitamiseks, mida seejärel edastatakse ühendatud klientidele WebSocketsi kaudu. Mõelge reaalajas vestlusrakendustele, koostöös dokumentide redigeerimisele või reaalajas armatuurlaudadele.
Rahvusvahelistamise (i18n) kaalutlused
Globaalsele publikule Server Actions'iga rakenduste arendamisel on rahvusvahelistamine (i18n) ülioluline. Siin on mõned olulised kaalutlused:
Veateadete lokaliseerimine
Veenduge, et Server Actions'i poolt tagastatud veateated oleksid lokaliseeritud kasutaja eelistatud keelde. See pakub paremat kasutajakogemust ja muudab kasutajatel probleemide mõistmise ja lahendamise lihtsamaks. Kasutage i18n-teeke tõlgete haldamiseks ja teadete dünaamiliseks kuvamiseks vastavalt kasutaja lokaadile.
Kuupäeva ja numbri vormindamine
Vormindage kuupäevad ja numbrid vastavalt kasutaja lokaadile. Erinevates lokaatides on erinevad tavad kuupäevade, numbrite ja valuutade kuvamiseks. Kasutage i18n-teeke nende väärtuste korrektseks vormindamiseks vastavalt kasutaja lokaadile.
Ajavööndite käsitlemine
Kuupäevade ja kellaaegadega tegelemisel olge teadlik ajavöönditest. Salvestage kuupäevad ja kellaajad UTC-vormingus ja teisendage need kuvamisel kasutaja kohalikku ajavööndisse. See tagab, et kuupäevad ja kellaajad kuvatakse korrektselt, sõltumata kasutaja asukohast. Näiteks sündmuste ajastamine või ajatemplite kuvamine.
Valuuta konverteerimine
Kui teie rakendus tegeleb valuutadega, pakkuge valuuta konverteerimise funktsionaalsust. Lubage kasutajatel vaadata hindu oma kohalikus valuutas. Kasutage usaldusväärset valuuta konverteerimise API-d, et tagada vahetuskursside ajakohasus. See on eriti oluline e-kaubanduse rakenduste ja finantsteenuste puhul.
Paremalt vasakule (RTL) kirjutamise tugi
Kui teie rakendus toetab keeli, mida kirjutatakse paremalt vasakule (RTL), nagu araabia või heebrea keel, veenduge, et teie kasutajaliides oleks nende keelte jaoks korralikult peegeldatud. See hõlmab paigutuse, teksti suuna ja ikoonide peegeldamist. Kasutage CSS-i loogilisi omadusi, et luua paigutusi, mis kohanduvad erinevate teksti suundadega.
Näited React Server Actions'ist globaalsetes rakendustes
Siin on mõned näited sellest, kuidas React Server Actions'eid saab kasutada globaalsetes rakendustes:
E-kaubanduse platvorm
- Toote lisamine ostukorvi: Server Action'it saab kasutada toote lisamiseks kasutaja ostukorvi. Toiming saab valideerida toote ID, kontrollida laoseisu ja uuendada ostukorvi andmebaasis.
- Tellimuse töötlemine: Server Action'it saab kasutada tellimuse töötlemiseks. Toiming saab valideerida kasutaja makseteavet, arvutada saatmiskulud ja luua tellimuse andmebaasis.
- Uudiskirjaga liitumine: Server Action saab käsitleda uudiskirjaga liitumisi, valideerides e-posti aadresse ja lisades need tellijate nimekirja.
Sotsiaalmeedia platvorm
- Kommentaari postitamine: Server Action'it saab kasutada kommentaari postitamiseks postituse alla. Toiming saab valideerida kommentaari teksti, seostada selle postitusega ja salvestada selle andmebaasi.
- Postituse laikimine: Server Action'it saab kasutada postituse laikimiseks. Toiming saab uuendada postituse laikide arvu ja salvestada laigi andmebaasi.
- Kasutaja jälgimine: Server Actions saavad hallata jälgimistaotlusi, käsitleda kasutajate blokeerimist ja uuendada jälgijate arvu.
Reisibroneerimisrakendus
- Lendude otsimine: Server Actions'eid saab kasutada lennu saadavuse päringuteks sihtkoha ja kuupäevade alusel. Toiming saab kutsuda väliseid API-sid, filtreerida tulemusi ja esitada kasutajale valikuid.
- Hotellitoa broneerimine: Server Actions saavad käsitleda hotellibroneeringuid, kinnitades tubade saadavust ja töödeldes makseandmeid.
- Reisisihtkohtade arvustamine: Server Action saab käsitleda kasutajate arvustuste ja hinnangute lisamist ja töötlemist.
React Server Components vs. Server Actions
On oluline mõista erinevust React Server Components'i ja Server Actions'i vahel, kuna need töötavad sageli koos, kuid teenivad erinevaid eesmärke:
React Server Components
React Server Components on komponendid, mis renderdatakse serveris. Need võimaldavad teil pärida andmeid, teostada loogikat ja renderdada kasutajaliidese elemente serveris, mis võib parandada jõudlust ja vähendada kliendis allalaaditava ja käivitatava JavaScripti hulka. Server Components on peamiselt mõeldud kasutajaliidese renderdamiseks ja esialgsete andmete pärimiseks.
Server Actions
Server Actions on asünkroonsed funktsioonid, mis töötavad serveris vastusena kasutaja interaktsioonidele, näiteks vormide esitamistele. Need on peamiselt mõeldud andmemuutuste käsitlemiseks, serveripoolse loogika teostamiseks ja kasutajale tagasiside andmiseks. Server Actions'eid kutsutakse välja kliendi komponentidest, tavaliselt vastusena vormide esitamistele või muudele kasutaja sündmustele.
Peamised erinevused:
- Eesmärk: Server Components on kasutajaliidese renderdamiseks, samas kui Server Actions on andmemuutuste käsitlemiseks.
- Täitmine: Server Components renderdatakse serveris esialgse lehe laadimise ajal, samas kui Server Actions'eid kutsutakse välja kliendi komponentidest vastusena kasutaja interaktsioonidele.
- Andmevoog: Server Components saavad andmeid pärida otse serverist, samas kui Server Actions saavad andmeid kliendilt vormide esitamise või muude kasutaja sündmuste kaudu.
Kuidas nad koos töötavad:
Server Components ja Server Actions'eid saab kasutada koos interaktiivsete veebirakenduste ehitamiseks. Server Components saavad renderdada esialgse kasutajaliidese ja pärida esialgsed andmed, samas kui Server Actions saavad käsitleda andmemuutusi ja anda kasutajale tagasisidet. Näiteks võiks Server Component renderdada vormi ja Server Action võiks käsitleda vormi esitamist ja uuendada andmeid andmebaasis.
Kokkuvõte
React Server Actions pakuvad võimsat ja tõhusat viisi vormide töötlemise, andmemuutuste ja muude serveripoolsete toimingute käsitlemiseks teie Reacti rakendustes. Kasutades Server Actions'eid, saate lihtsustada oma arendusprotsessi, parandada rakenduse jõudlust, suurendada turvalisust ja pakkuda paremat kasutajakogemust. Üha keerukamate veebirakenduste ehitamisel muutub React Server Actions'i mõistmine ja kasutamine kaasaegsete Reacti arendajate jaoks oluliseks oskuseks.
Ärge unustage järgida selles juhendis toodud parimaid praktikaid, et tagada Server Actions'i tõhus ja turvaline kasutamine. Server Actions'i omaksvõtmisega saate avada Reacti täieliku potentsiaali ja ehitada suure jõudlusega, kasutajasõbralikke veebirakendusi globaalsele publikule.